/* Universidad del Valle de Guatemala
 * CC2003 - Algoritmos y Estructuras de Datos
 * PROYECTO #1: RURPLE ME
 * Fecha de Entrega: Jueves 11 de Agosto de 2011
 */

/**
 * Clase que permite la creacion de Mapas en la aplicacion.
 * @author Jose Antonio Bagur (10275), Luis Antonio Siguenza (10297) y Emilo Jose Miranda (10411)
 */

/* SE CARGAN LOS PAQUETES A UTILIZAR EN LA CLASE */
import javax.microedition.lcdui.*;

/* SE HEREDAN LOS MÉTODOS Y ATRIBUTOS DEL PAQUETE CANVAS */
public class MapaRurple extends Canvas {
    
    /* ATRIBUTOS DE LA CLASE MAPARURPLE */
    String comandos = "";
    boolean prueba;
    
    /* MÉTODOS DE LA CLASE MAPARURPLE */
    
    /**
     * Este metodo permite obtener el script creado por el usuario para generar un mapa. 
     * @param script generado por el usuario.
     */
    public void generarCodigo (String script) {
        comandos = script;        
    }
    
    /**
     * Metodo que permite la creacion del mapa basandose en el script generado por el usuario.
     * @param g graficos.
     */
    public void paint(Graphics g) {
        Image objeto =  null;  
        prueba = true;
        char comando = '3';
        g.setColor(255, 255, 255);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(0,0,0);
        
        for (int i = 0; i < 230; i += 20) {
            g.drawLine(i, 30, i, getHeight() - 20);
        }
        
        for (int i = 0; i < getHeight() - 20; i += 20) {
            g.drawLine(0, i, getWidth(), i);
        }
        
        //Image objeto =  null;
        int posicion = 0;
        int contador = 0;
        if (comandos.length() <= 150) {                                         // MÁXIMO NÚMERO DE OPCIONES A INGRESAR EN EL MAPA
            for (int j = 30; j < getHeight() - 20; j += 20) {
                for (int i = 0; i < getWidth(); i += 20) {
                    
                    try {
                        objeto = Image.createImage("/Robot.png");                // CREACIÓN DE LA IMAGEN
                    } catch (Exception e) {                                    
                        System.err.println("ERROR: " + e);
                    }
                    g.drawImage(objeto, 220, 250, 0);
                    try {
                        comando = comandos.charAt(posicion);
                    } catch (Exception e) {}
                    switch (comando) {
                        case '1':
                            try {
                                objeto = Image.createImage("/Piedra.png");       // CREACIÓN DE LA IMAGEN 
                            } catch(Exception e) {
                                System.err.println("ERROR: " + e);              
                            }
                            g.drawImage(objeto, i, j, 0);
                            contador++;
                            break;
                        case  '0':
                            contador++;
                            break;
                        case ' ':
                            if (contador == 12) {
                                i -= 20;
                                contador = 0;
                            } else {
                                g.drawString("ERROR: CÓDIGO NO CORRECTO.", getWidth()/2, 10, Graphics.BASELINE | Graphics.HCENTER);
                                i = getWidth();
                                j = getHeight();
                            }
                            break;
                        default:
                            g.drawString("ERROR: CÓDIGO NO CORRECTO.", getWidth()/2, 10, Graphics.BASELINE | Graphics.HCENTER);
                            i = getWidth();
                            j = getHeight();
                            break;
                    }
                    posicion++;
                }
            }
        }
    }   
} // FIN DE LA CLASE MAPARURPLE
